---
title: ProviderObserver
---

import CodeBlock from "@theme/CodeBlock";
import logger from "!!raw-loader!/i18n/ko/docusaurus-plugin-content-docs/current/concepts/provider_observer_logger.dart";
import { trimSnippet } from "../../../../../src/components/CodeSnippet";

[ProviderObserver]는 ProviderContainer의 변화를 관찰합니다.

[ProviderObserver]를 사용하기 위해서, 사용하고자 하는 클래스에 `ProviderObserver`를 상속하고
메소드를 오버라이드(override)하여 사용할 수 있습니다. 

[ProviderObserver]는 3개의 메소드를 가집니다.

- `didAddProvider`:  프로바이더(provider)가 초기화 될때 마다 호출됩니다. 노출되는 값은 `값(value)`입니다. 
- `didDisposeProvider`: 프로바이더(provider)가 `disposed`될 때마다 호출됩니다.
- `didUpdateProvider`: 프로바이더(provider)값이 변경(when they emit a notification)될 때 마다 호출됩니다.

### 사용법:

[ProviderObserver]는 `didUpdateProvider`를 오버라이딩 하여 프로바이더들(providers)의 변화를 로깅할 수 있습니다. 

<CodeBlock>{trimSnippet(logger)}</CodeBlock>

이제 프로바이더 상태 값이 갱신될때 마다 로거에 기록으로 출력될 것입니다. 

```
I/flutter (16783): {
I/flutter (16783):   "provider": "counter",
I/flutter (16783):   "newValue": "1"
I/flutter (16783): }
```

[providerobserver]: https://pub.dev/documentation/riverpod/latest/riverpod/ProviderObserver-class.html
